This relates to memory, and, more particularly, to volatile memory.
Integrated circuits often contain volatile memory elements such as static random-access memory elements. Access transistors are used in reading and writing data for the static random-access memory elements.
Volatile memory elements such as static random-access memory elements may be used to store data during operation of a digital circuit. In the context of programmable logic device integrated circuits, static random-access memory can be used as user memory or as configuration random-access memory that stores configuration data.
It can be challenging to design static random-access memory. For example, it can be difficult to balance read and write margins. In a cell that has a single access transistor, decreasing the size of the access transistor may improve the read margin of the cell at the expense of a degraded write margin. Increasing the size of the access transistor may improve write margin at the expense of decreased read margin.
In dual port static random-access memory, data can be accessed using two different ports. If care is not taken, write operations and read operations occurring simultaneously on different ports can interfere with each other. Interference between the ports can be avoided by imposing restrictions on simultaneous read and write operations such as restrictions requiring that read operations be completed before write operations. However, such restrictions tend to slow operation of the memory.